import unittest
from lettcode.P1827_MinimumOperationsToMakeTheArrayIncreasing import Solution


class P1827_MinimumOperationsToMakeTheArrayIncreasingTest(unittest.TestCase):
    def test_solution(self):
        self.assertEqual(14, Solution().minOperations([1, 5, 2, 4, 1]))
        self.assertEqual(3, Solution().minOperations([1, 1, 1]))
        self.assertEqual(0, Solution().minOperations([1]))
        self.assertEqual(1329884, Solution().minOperations(
            [4, 6, 2, 5, 2, 8, 2, 10, 6, 4, 7, 5, 1, 6, 3, 6, 10, 5, 4, 6, 2, 9, 10, 10, 10, 2, 4, 4, 1, 4, 7, 2, 5, 9, 2,
             2, 1, 1, 5, 6, 8, 8, 3, 2, 9, 6, 2, 9, 3, 3, 3, 3, 6, 5, 2, 9, 10, 5, 3, 4, 3, 9, 1, 6, 10, 9, 4, 3, 5, 7, 9,
             3, 1, 4, 5, 2, 8, 7, 9, 5, 9, 8, 9, 8, 1, 7, 6, 3, 5, 8, 1, 7, 10, 1, 1, 6, 10, 3, 10, 3, 3, 5, 5, 7, 10, 7, 3,
             10, 2, 4, 8, 1, 3, 9, 6, 9, 8, 4, 4, 6, 8, 8, 4, 7, 6, 9, 10, 5, 4, 1, 2, 9, 6, 3, 9, 4, 5, 5, 5, 9, 6, 3, 8,
             10, 2, 2, 10, 9, 10, 7, 3, 3, 5, 7, 4, 10, 1, 8, 7, 6, 7, 9, 3, 9, 1, 9, 2, 5, 2, 5, 2, 3, 10, 2, 8, 4, 7, 7,
             7, 3, 6, 8, 3, 10, 8, 4, 2, 7, 10, 9, 7, 2, 5, 5, 4, 7, 9, 1, 4, 9, 8, 10, 1, 1, 10, 4, 5, 4, 3, 5, 3, 9, 4, 5,
             5, 10, 5, 8, 3, 9, 6, 8, 7, 2, 4, 10, 7, 4, 5, 2, 1, 2, 10, 1, 9, 5, 3, 2, 9, 6, 10, 5, 7, 9, 6, 9, 6, 1, 2, 8,
             8, 6, 5, 9, 7, 6, 10, 8, 2, 7, 7, 4, 9, 1, 5, 10, 9, 4, 8, 10, 9, 7, 5, 3, 8, 10, 9, 4, 6, 9, 1, 7, 10, 7, 7,
             6, 10, 10, 2, 8, 4, 5, 1, 7, 3, 7, 5, 3, 2, 10, 1, 6, 5, 7, 9, 5, 3, 8, 5, 8, 3, 8, 9, 1, 5, 9, 2, 10, 7, 2, 6,
             2, 8, 1, 3, 9, 3, 2, 7, 5, 10, 5, 4, 9, 4, 4, 6, 5, 2, 2, 9, 6, 8, 9, 9, 1, 3, 5, 9, 5, 6, 10, 4, 7, 9, 7, 3,
             8, 5, 10, 6, 4, 5, 10, 4, 1, 10, 7, 6, 7, 4, 5, 4, 2, 3, 10, 8, 10, 3, 10, 5, 8, 9, 3, 3, 3, 8, 6, 5, 7, 4, 2,
             4, 5, 2, 2, 4, 7, 6, 8, 2, 3, 1, 1, 10, 1, 4, 1, 8, 9, 10, 8, 6, 5, 2, 10, 3, 2, 4, 7, 4, 8, 8, 7, 3, 4, 4, 5,
             8, 9, 10, 7, 4, 8, 5, 6, 8, 10, 2, 4, 2, 1, 1, 1, 8, 6, 7, 10, 5, 4, 7, 3, 3, 1, 1, 7, 3, 9, 1, 10, 7, 5, 3, 2,
             8, 5, 1, 1, 9, 1, 9, 3, 1, 5, 2, 7, 2, 4, 1, 8, 3, 5, 4, 8, 7, 6, 5, 5, 4, 4, 1, 10, 10, 3, 6, 7, 10, 9, 9, 1,
             6, 9, 7, 9, 4, 9, 7, 2, 5, 10, 2, 5, 3, 2, 3, 1, 4, 7, 1, 1, 2, 9, 8, 9, 6, 2, 6, 1, 3, 9, 1, 8, 3, 7, 8, 1, 9,
             5, 2, 5, 6, 2, 5, 1, 7, 1, 5, 6, 3, 5, 7, 2, 5, 2, 7, 4, 9, 9, 4, 6, 6, 9, 7, 10, 8, 2, 3, 8, 9, 9, 10, 9, 9,
             1, 5, 3, 4, 6, 7, 9, 6, 2, 7, 6, 3, 10, 2, 1, 5, 9, 6, 7, 5, 6, 6, 5, 6, 9, 9, 1, 9, 2, 3, 6, 6, 6, 10, 2, 8,
             5, 8, 8, 6, 7, 2, 10, 1, 3, 1, 9, 8, 10, 5, 4, 10, 6, 6, 6, 7, 5, 8, 10, 6, 9, 9, 3, 1, 3, 5, 4, 10, 3, 2, 3,
             7, 10, 1, 2, 9, 5, 2, 4, 5, 2, 10, 9, 2, 2, 4, 3, 9, 7, 1, 10, 6, 8, 5, 4, 4, 10, 8, 4, 7, 8, 6, 9, 4, 8, 2, 5,
             7, 4, 1, 9, 7, 9, 8, 2, 7, 10, 9, 10, 10, 7, 1, 6, 8, 1, 4, 5, 1, 9, 2, 5, 9, 6, 9, 10, 9, 5, 9, 7, 9, 9, 7,
             10, 10, 5, 8, 5, 3, 9, 8, 10, 3, 9, 3, 5, 1, 7, 10, 1, 6, 7, 7, 5, 1, 2, 2, 1, 7, 5, 8, 5, 6, 8, 6, 7, 8, 2, 8,
             6, 3, 7, 3, 1, 3, 5, 6, 3, 10, 5, 7, 5, 9, 5, 7, 5, 7, 6, 8, 4, 8, 7, 7, 2, 2, 3, 4, 3, 4, 1, 2, 5, 3, 8, 2, 7,
             3, 1, 2, 7, 10, 1, 9, 4, 9, 7, 6, 1, 2, 9, 7, 2, 5, 5, 3, 8, 1, 4, 2, 7, 2, 8, 5, 9, 8, 7, 2, 10, 8, 2, 3, 7,
             10, 4, 3, 9, 5, 7, 9, 5, 8, 9, 4, 10, 6, 8, 2, 1, 6, 5, 1, 9, 8, 5, 2, 4, 9, 5, 5, 4, 7, 3, 3, 5, 4, 7, 9, 10,
             1, 9, 10, 9, 3, 7, 5, 5, 8, 5, 5, 8, 4, 8, 6, 10, 8, 4, 6, 3, 10, 3, 10, 8, 9, 3, 1, 9, 6, 9, 3, 4, 6, 10, 8,
             8, 6, 2, 3, 3, 5, 4, 2, 9, 1, 10, 3, 2, 4, 10, 4, 9, 10, 5, 7, 6, 1, 1, 5, 10, 4, 2, 4, 5, 6, 5, 10, 9, 7, 1,
             2, 6, 6, 3, 2, 5, 3, 10, 1, 6, 2, 2, 2, 5, 6, 4, 5, 9, 1, 6, 1, 2, 3, 7, 6, 4, 2, 6, 5, 1, 9, 6, 2, 6, 3, 10,
             5, 7, 2, 10, 10, 9, 8, 10, 7, 9, 7, 5, 4, 5, 9, 3, 1, 10, 9, 2, 3, 4, 4, 7, 5, 9, 1, 5, 9, 5, 9, 5, 8, 3, 7, 2,
             6, 2, 9, 6, 9, 9, 9, 10, 1, 10, 5, 8, 3, 3, 2, 10, 3, 4, 8, 6, 6, 5, 3, 3, 7, 8, 7, 2, 10, 3, 5, 5, 10, 1, 9,
             1, 3, 7, 9, 2, 8, 1, 7, 10, 7, 5, 6, 7, 7, 10, 8, 1, 2, 8, 1, 1, 1, 2, 10, 3, 9, 9, 6, 9, 5, 10, 6, 8, 4, 10,
             4, 2, 9, 6, 3, 2, 1, 6, 7, 6, 5, 1, 10, 7, 7, 7, 6, 5, 6, 8, 4, 10, 9, 3, 1, 6, 2, 9, 3, 9, 8, 6, 2, 10, 1, 8,
             4, 7, 3, 7, 4, 2, 4, 6, 6, 4, 8, 8, 6, 8, 4, 7, 8, 7, 9, 2, 10, 8, 5, 3, 3, 1, 7, 7, 2, 1, 2, 3, 8, 7, 9, 5, 3,
             3, 9, 2, 5, 1, 8, 7, 4, 9, 7, 1, 9, 4, 7, 3, 3, 6, 4, 2, 9, 9, 3, 3, 7, 10, 1, 9, 4, 7, 4, 1, 9, 4, 9, 10, 9,
             2, 4, 7, 8, 2, 10, 1, 7, 2, 9, 2, 8, 1, 9, 4, 1, 1, 5, 8, 5, 7, 3, 10, 3, 9, 6, 9, 8, 9, 7, 9, 3, 7, 7, 4, 8,
             5, 6, 3, 5, 10, 5, 3, 10, 2, 6, 6, 3, 5, 5, 5, 6, 7, 5, 10, 8, 1, 3, 3, 5, 4, 4, 2, 10, 9, 10, 4, 9, 7, 4, 10,
             3, 9, 8, 7, 4, 2, 2, 3, 1, 1, 7, 7, 7, 3, 10, 10, 3, 9, 9, 2, 4, 7, 3, 5, 4, 7, 6, 3, 4, 5, 3, 6, 8, 9, 5, 2,
             9, 5, 4, 8, 1, 5, 10, 10, 2, 10, 6, 8, 5, 10, 1, 1, 6, 3, 3, 2, 2, 7, 10, 4, 4, 9, 9, 7, 2, 4, 7, 9, 3, 10, 5,
             1, 2, 4, 10, 7, 8, 9, 10, 4, 5, 1, 3, 9, 9, 4, 7, 5, 7, 7, 5, 8, 2, 3, 3, 9, 1, 8, 1, 8, 4, 7, 9, 6, 4, 2, 2,
             1, 7, 8, 4, 3, 10, 9, 4, 9, 7, 9, 6, 4, 4, 6, 10, 2, 6, 1, 8, 1, 10, 3, 3, 5, 8, 1, 10, 9, 2, 10, 7, 2, 7, 9,
             10, 5, 7, 5, 6, 8, 1, 9, 8, 1, 7, 5, 10, 6, 3, 10, 10, 9, 5, 2, 10, 6, 7, 7, 9, 1, 10, 10, 2, 1, 10, 9, 1, 2,
             6, 6, 6, 9, 1, 6, 10, 2, 8, 2, 9, 8, 6, 9, 9, 1, 3, 6, 6, 4, 3, 10, 3, 10, 2, 7, 6, 9, 7, 6, 6, 5, 10, 6, 1, 2,
             4, 5, 7, 9, 5, 10, 10, 2, 2, 3, 5, 7, 2, 3, 5, 9, 5, 4, 4, 2, 5, 8, 1, 9, 5, 4, 9, 2, 9, 6, 6, 5, 9, 3, 1, 8,
             6, 1, 1, 6, 7, 3, 9, 1, 10, 9, 7, 3, 4, 4, 2, 10, 3, 10, 9, 2, 5, 8, 4, 1, 6, 8, 6, 10, 6, 4, 1, 1, 8, 1, 3, 5,
             9, 1, 1, 4, 2, 9, 3, 1, 9, 4, 4, 8, 5, 4, 8, 9, 6, 6, 7, 2, 4, 10, 3, 4, 10, 5, 10, 7, 10, 8, 6, 1, 8, 1, 2,
             10, 10, 7, 10, 6, 6, 2, 7, 4, 9, 8, 10, 10, 9, 9, 8, 10, 10, 8, 10, 8, 3, 5, 9, 5, 10, 7, 10, 9, 5, 5, 5, 1,
             10, 1, 8, 8, 6, 4, 9, 8, 4, 8, 6, 3, 7, 7, 1, 2, 6, 1, 5, 9, 1, 5, 7, 1, 6, 6, 5, 10]))
